 
//  let didWarnUncachedGetSnapshot: void | true; //用于标记是否已经发出警告，如果值为true表示已经发出了警告，否则为undefined
//  let isHydrating: boolean = false;  //用于标记当前是否处于服务器端渲染的过程中，默认值为false
//  function getIsHydrating(): boolean {
//   return isHydrating;
// }
// //  用于在组件挂载阶段同步外部存储
//  function mountSyncExternalStore<T>(
//   subscribe: (() => void) => () => void, //用于订阅外部存储的更新
//   getSnapshot: () => T, //用于获取当前的存储快照
//   getServerSnapshot?: () => T, //可选的函数，用于在服务器端渲染时获取存储的快照
// ): T {
//   const fiber = currentlyRenderingFiber;
//   const hook = mountWorkInProgressHook();

//   let nextSnapshot;
//   const isHydrating = getIsHydrating();
//   if (isHydrating) {
//     if (getServerSnapshot === undefined) {
//       throw new Error(
//         'Missing getServerSnapshot, which is required for ' +
//           'server-rendered content. Will revert to client rendering.',
//       );
//     }
//     nextSnapshot = getServerSnapshot();
//     if (__DEV__) {
//       if (!didWarnUncachedGetSnapshot) {
//         if (nextSnapshot !== getServerSnapshot()) {
//           console.error(
//             'The result of getServerSnapshot should be cached to avoid an infinite loop',
//           );
//           didWarnUncachedGetSnapshot = true;
//         }
//       }
//     }
//   } else {
//     nextSnapshot = getSnapshot();
//     if (__DEV__) {
//       if (!didWarnUncachedGetSnapshot) {
//         const cachedSnapshot = getSnapshot();
//         if (!is(nextSnapshot, cachedSnapshot)) {
//           console.error(
//             'The result of getSnapshot should be cached to avoid an infinite loop',
//           );
//           didWarnUncachedGetSnapshot = true;
//         }
//       }
//     }
 
 
//  useSyncExternalStore<T>(
//       subscribe: (() => void) => () => void,
//       getSnapshot: () => T,
//       getServerSnapshot?: () => T,
//     ): T {
//       currentHookNameInDev = 'useSyncExternalStore';
//       mountHookTypesDev();
//       return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
//     },


    // 使用方法
//   function useSyncExternalStore(initialData: string) {
//   const [data, setData] = useState(initialData);
//   const [externalData, setExternalData] = useState(initialData);

//   const sync = () => {
//     setExternalData(data);
//   };

//   useEffect(() => {
//     sync();
//   }, [data]);

//   return {
//     data,
//     setData,
//     externalData,
//     onSync: setExternalData,
//   };
// }
  // const { data, setData, externalData, onSync } =
  //   useSyncExternalStore("initial value");
  //     <div>
  //       <p style={{ color: "red" }}>useSyncExternalStore</p>
  //       <p>Internal Data: {data}</p>
  //       <p>External Data: {externalData}</p>
  //       <button onClick={() => setData("new internal value")}>
  //         Set Internal Data
  //       </button>
  //       <button onClick={() => onSync("new external value")}>
  //         Sync External Data
  //       </button>
  //     </div>

 


// 精简版实现代码
// import { useRef } from 'react';

// function useSyncExternalStore({ data, setData, externalData, onSync }) {
 
//   const dataRef = useRef(data); // 创建一个保存 data 的引用
//   const setDataRef = useRef(setData); // 创建一个保存 setData 的引用
//   const externalDataRef = useRef(externalData); // 创建一个保存 externalData 的引用

 // 定义同步函数 sync
//   function sync() {
  // 获取最新的 externalData
//     const newData = externalDataRef.current;

//     if (newData !== dataRef.current) {
//       dataRef.current = newData;
//       setDataRef.current(newData);
//       onSync(newData);
//     }
//   }

//   return sync;
// }

// export default useSyncExternalStore;